package aliyun.cx.admin.service;

import aliyun.cx.admin.entity.Permission;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 权限管理服务接口
 */
public interface PermissionService extends IService<Permission> {
    
    /**
     * 根据角色ID获取权限列表
     */
    List<Permission> getPermissionsByRoleId(Long roleId);
    
    /**
     * 根据用户ID获取权限列表
     */
    List<Permission> getPermissionsByUserId(Long userId);
    
    /**
     * 根据权限名称获取权限
     */
    Permission getPermissionByName(String permissionName);
    
    /**
     * 检查权限名称是否存在
     */
    boolean existsByName(String permissionName);
    
    /**
     * 根据权限类型获取权限列表
     */
    List<Permission> getPermissionsByType(String type);
    
    /**
     * 根据资源获取权限列表
     */
    List<Permission> getPermissionsByResource(String resource);
    
    /**
     * 获取菜单权限列表（树形结构）
     */
    List<Permission> getMenuPermissions();
    
    /**
     * 获取操作权限列表
     */
    List<Permission> getActionPermissions();
    
    /**
     * 检查用户是否具有指定权限
     */
    boolean hasPermission(Long userId, String permissionName);
    
    /**
     * 检查用户是否具有指定资源的权限
     */
    boolean hasResourcePermission(Long userId, String resource, String action);
}